#pragma once

namespace CPU {
//perform inversion in-place
void inplace_inversion(double* A, lapack_int * ipiv, int n, int lda);

void update_inversion(double* A, double* inverse, lapack_int * ipiv, double* workplace, int m, int n, int lda, int ldi);
}


namespace DEVICE {

void update_inversion(SOLVER_HANDLE solverH, double* A, double* inverse, int* ipiv, int m, int n, int lda, int ldi);
void new_dgemv(const double *A, const double *B, double *C, int n, int ldA, int ldB, int ldC);
}